1. Technical Field
The present invention relates generally to computer application development and, more specifically, to a system and method for choosing, assembling and packaging software components.
2. Background of the Invention
International Business Machines Corp. (IBM) of Armonk, N.Y. has been at the forefront of new paradigms in business computing. For decades, the typical paradigm for business computing is that custom business applications were specifically designed and built for every business need. Of course, most custom business applications benefited from commonly-available, standardized applications. For example, a business that requires a database management system (DBMS) has several vendors from which to choose and each choice typically provides many of the same necessary features and interfaces to an application developer. However, a DBMS is only one of a multitude of possible components that may be required to implement a business solution.
With the advent of the Internet, sometimes referred to as the “web,” business communication has also evolved. Businesses and consumers have multiple means of communication not previously available, including, but not limited to, business-to-business (B2B) and business-to-consumer (B2C) links. As businesses seek to take advantage of the web, some companies have provided specific applications, called “e-business” applications, that work in that particular environment. In addition, companies, such as International Business Machines Corporation (IBM) of Armonk, N.Y., have developed products that facilitate the deployment, integration, execution and management of e-business applications. One such IBM product is “WebSphere,” which encompasses tools for developing e-business applications and middleware for running web-based applications. One part of WebSphere is a WebSphere Application Server (WAS), which is a run-tine component of the WebSphere family of products. Basically, WAS is a Java process with a Java Virtual Machine (JVM).
There are several approaches to the development of a business software solution for a particular business. One approach involves an independent software vendor (ISV) who integrates software components into an “application package.” Another approach involves a system integrator (SI) who integrates software and hardware components and application packages. The SI determines required functionality, selects commercially available hardware and software components that implement portions of the required functionality and generate a final “solution package.” In addition to any tasks performed by a SI, a solution provider (SP) may produce custom software to integrate and enhance the commercially available hardware and software components and infrastructure software. The terms SI and SP are often used interchangeably. The software components that an ISV or SP integrate with software components is called custom code (sometimes also called “application” or “glue” code). Examples of typical software components include, but are not limited to, an IBM HTTP Server and associated plug-ins, a WebServer Application Server-Express runtime application and an IBM DB2 Universal Database (UDB) component. The claimed subject matter may be employed by an SI, SP or ISV so throughout the Specification, SIs, SPs and ISVs will all be referred to as “developers” or “users” (as in users of the tools provided with respect to the claimed subject matter).
Two terms that may be useful to clarify are the terms “application” and “solution.” In some cases, an application solves several problems and as a result may be considered a solution. However, usually the term “solution” refers to an application because a solution solves a target set of problems, although some developers call their applications a solution. A solution is usually broader than an application because it resolves or addresses horizontal as well as vertical business problems. Solutions are typically delivered for the purpose of running a business end-to-end and not just focused on a portion (or application of the business). An application is applied to solve a set of problems for a business and might be applied to solve another set of problems of the same kind for another customer.
What is needed is a method and system, or a software component meta management system (SCMMS), for enabling a developer, e.g. ISV, SP or SI, to view and select available components for a particular application or solution based upon an objective scoring system. Ideally, the objective scoring system may be adjusted to reflect knowledge about the customer's specific needs and sophistication and includes feedback so that the generation of a particular application or solution provides more accurate scoring, and thus better results, with respect to the generation of subsequent applications or solutions.